package com.springcloud.service;

import com.springcloud.entities.CommonResult;
import com.springcloud.entities.Payment;
import feign.Param;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

//保证它能够扫描的到
@Repository
//下面这个注解保证能够下面的这个接口作为一个Feign功能实现的接口，加上了提供服务的名称
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")
public interface PaymentFeignService {

    @GetMapping(value = "/payment/get/{id}")
    //我在课程上面看到的说，controller层的@GetMapping的value的值应当和这个的值一样
    //但是我的这个就不一样，可以正确的运行
    //但是
    //这两个层次的函数所用到的形参的注解必须要一样，都要使用PathVariable
    //上面的这个路径是不能少的，我也不知道为什么就不能少
    //上面的这个路劲需要和服务提供者，也就是8001,8002中的controller中的路径一样
    //程序就是根据这个路径去调用的
    CommonResult<Payment> getPaymentById(@PathVariable("id") Long id);

    @GetMapping("/payment/feign/timeout")
    public String paymentFeignTimeout();
}
